//
// Created by LanK on 2024/12/29.
//
#include <stdio.h>
#include <stdlib.h>

#define MAX_SIZE 50

// 队列结构体
typedef struct {
    int data[MAX_SIZE];
    int front;  // 队头
    int rear;   // 队尾
} Queue;

// 初始化队列
void initQueue(Queue* queue) {
    queue->front = 0;
    queue->rear = 0;
}

// 入队操作
void enqueue(Queue* queue, int x) {
    if (queue->rear < MAX_SIZE) {
        queue->data[queue->rear++] = x;  // 将元素加入队尾
    }
}

// 出队操作
int dequeue(Queue* queue) {
    if (queue->front == queue->rear) {
        printf("no\n");  // 如果队列为空，输出 no
        exit(0);  // 退出程序
    }
    return queue->data[queue->front++];  // 从队头弹出元素
}

// 计算队列元素个数
int size(Queue* queue) {
    return queue->rear - queue->front;
}

int main() {
    int N;
    scanf("%d", &N);  // 输入操作次数

    Queue queue;
    initQueue(&queue);  // 初始化队列

    int command, x;

    for (int i = 0; i < N; i++) {
        scanf("%d", &command);  // 读取操作命令

        if (command == 1) {  // 入队操作
            scanf("%d", &x);
            enqueue(&queue, x);
        } else if (command == 2) {  // 出队操作
            printf("%d\n", dequeue(&queue));
        } else if (command == 3) {  // 查询队列大小
            printf("%d\n", size(&queue));
        }
    }

    return 0;
}
